﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using saigonbook.Biz;
using System.Text.RegularExpressions;

namespace quanlybansach.Frm
{
    public partial class Frm_nhaphang : Form
    {
        public Frm_nhaphang()
        {
            InitializeComponent();
            danhsachhang.Columns.Add("Col1", "STT");
            danhsachhang.Columns.Add("Col2", "Mã sách");
            danhsachhang.Columns.Add("Col3", "Tên sách");
            danhsachhang.Columns.Add("Col4", "Số lượng");
            danhsachhang.Columns.Add("Col5", "Giá (VNĐ)");
            danhsachhang.Columns.Add("Col6", "Thành tiền (VNĐ)");
            danhsachhang.Columns[0].Width = 80;
            danhsachhang.Columns[1].Width = 100;
            danhsachhang.Columns[2].Width = 200;
            danhsachhang.Columns[3].Width = 90;
            danhsachhang.Columns[4].Width = 110;
            danhsachhang.Columns[5].Width = 140;
            danhsachhang.AllowUserToAddRows = false;
            btnxoa.Enabled = false;
        }

        private static List<BIZ_chitietphieunhap> danhsachctpn = new List<BIZ_chitietphieunhap>();

        private void Form_nhaphang_Load(object sender, EventArgs e)
        {
            BIZ_sach s = new BIZ_sach();
            cbbtensach = BIZ_sach.Cbb_sach(cbbtensach);
            txtmaphieunhap.Text = BIZ_phieunhap.Select_maphieu().ToString();
        }

        private void btndong_Click(object sender, EventArgs e)
        {
            this.Visible = false;
        }

        private string catchuoi(string chuoi)
        {
            while (chuoi.Contains("  "))
            {
                chuoi = chuoi.Replace("  ", " ");
            }
            return chuoi;
        }

        private bool IsNumber(string pText)
        {
            Regex regex = new Regex(@"^[-+]?[0-9]*\.?[0-9]+$");
            return regex.IsMatch(pText);
        }

        int stt = 1;
        int tongtien = 0;

        private bool kiemtratontaima(int masach, List<BIZ_chitietphieunhap> ds)
        {
            foreach (BIZ_chitietphieunhap ctpn in ds)
                if (ctpn.sach.masach == masach)
                    return true;
            return false;
        }

        private void btnnhap_Click(object sender, EventArgs e)
        {
            danhsachhang.Rows.Clear();
            if ("".Equals(txtsoluong.Text) || "".Equals(txtgianhap.Text))
            {
                MessageBox.Show("Thông tin chưa đầy đủ", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                if (!IsNumber(txtsoluong.Text) || !IsNumber(txtgianhap.Text) || txtgianhap.Text == "0" || txtsoluong.Text == "0")
                    MessageBox.Show("Số lượng và giá phải là một số khác 0", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                else
                {
                    BIZ_chitietphieunhap ctpn = new BIZ_chitietphieunhap();
                    ctpn.sach = new BIZ_sach();
                    ctpn.sach.masach = int.Parse(cbbtensach.SelectedValue.ToString());
                    ctpn.sach.tensach = cbbtensach.Text.ToString(); 
                    ctpn.soluong = int.Parse(txtsoluong.Text);
                    ctpn.gia = int.Parse(txtgianhap.Text);
                    if (danhsachctpn.Count < 1)
                    {
                        danhsachctpn.Add(ctpn);
                        tongtien = tongtien + (ctpn.soluong * ctpn.gia);
                    }
                    else
                    {
                        if (kiemtratontaima(ctpn.sach.masach, danhsachctpn))
                        {
                            foreach (BIZ_chitietphieunhap ct in danhsachctpn)
                                if (ct.sach.masach == ctpn.sach.masach)
                                {
                                    int thanhtien = ct.soluong * ct.gia;
                                    ct.soluong = ctpn.soluong;
                                    ct.gia = ctpn.gia;
                                    tongtien = tongtien - thanhtien + (ctpn.soluong * ctpn.gia);
                                }
                        }
                        else
                        {
                            danhsachctpn.Add(ctpn);
                            tongtien = tongtien + (ctpn.soluong * ctpn.gia);
                        }   
                    }
                }
            }
            foreach (BIZ_chitietphieunhap ct in danhsachctpn)
            {
                string gia = ct.gia.ToString("c");
                gia = gia.Substring(1, gia.LastIndexOf(".") - 1);
                string thanhtien = (ct.soluong * ct.gia).ToString("c");
                thanhtien = thanhtien.Substring(1, thanhtien.LastIndexOf(".") - 1);
                danhsachhang.Rows.Add(stt, ct.sach.masach, ct.sach.tensach, ct.soluong, gia, thanhtien);
                stt++;
            }
            stt = 1;
            string _tongtien = tongtien.ToString("c");
            _tongtien = _tongtien.Substring(1, _tongtien.LastIndexOf(".") - 1) + " VNĐ";
            txttongtien.Text = _tongtien;
        }

        private void danhsachhang_Click(object sender, DataGridViewCellEventArgs e)
        {
            if (danhsachhang.CurrentCell != null)
            {
                btnxoa.Enabled = true;
                int ma = int.Parse(danhsachhang.CurrentRow.Cells[1].Value.ToString().Trim());
                foreach (BIZ_chitietphieunhap ctpn in danhsachctpn)
                {
                    if (ctpn.sach.masach == ma)
                    {
                        cbbtensach.Text = ctpn.sach.tensach;
                        txtsoluong.Text = ctpn.soluong.ToString();
                        txtgianhap.Text = ctpn.gia.ToString();
                        break;
                    }
                } 
            }
        }

        private void btnhuy_Click(object sender, EventArgs e)
        {
            BIZ_sach s = new BIZ_sach();
            txtsoluong.Text = null;
            txtgianhap.Text = null;
        }

        private void btnxoa_Click(object sender, EventArgs e)
        {
            int maxoa = int.Parse(cbbtensach.SelectedValue.ToString());
            if (MessageBox.Show("Bạn có muốn xóa '" + cbbtensach.Text + "' ra khỏi phiếu nhập không?", "Thông Báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                foreach(BIZ_chitietphieunhap ctpn in danhsachctpn)
                {
                    if (ctpn.sach.masach == maxoa)
                    {
                        tongtien = tongtien - (ctpn.soluong * ctpn.gia);
                        danhsachctpn.Remove(ctpn);
                        break;
                    }
                }
                MessageBox.Show("Xóa thành công", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                danhsachhang.Rows.Clear();
                foreach (BIZ_chitietphieunhap ct in danhsachctpn)
                {
                    string gia = ct.gia.ToString("c");
                    gia = gia.Substring(1, gia.LastIndexOf(".") - 1);
                    string thanhtien = (ct.soluong * ct.gia).ToString("c");
                    thanhtien = thanhtien.Substring(1, thanhtien.LastIndexOf(".") - 1);
                    danhsachhang.Rows.Add(stt, ct.sach.masach, ct.sach.tensach, ct.soluong, gia, thanhtien);
                    stt++;
                }
                stt = 1;
                txtsoluong.Text = null;
                txtgianhap.Text = null;
                btnxoa.Enabled = false;
                string _tongtien = tongtien.ToString("c");
                _tongtien = _tongtien.Substring(1, _tongtien.LastIndexOf(".") - 1);
                txttongtien.Text = _tongtien;
            }
        }

        private void btnluu_Click(object sender, EventArgs e)
        {
            if ("".Equals(txtnhacungcap.Text) || "".Equals(txtdiachi.Text) || "".Equals(txtemail.Text) || "".Equals(txtsodienthoai.Text))
            {
                MessageBox.Show("Thông tin chưa đầy đủ", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                if (!IsNumber(txtsodienthoai.Text) || txtsodienthoai.Text.Length > 11)
                {
                    MessageBox.Show("Số điện thoại phải là số và ít hơn 11 số", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    if (danhsachctpn.Count < 1)
                        MessageBox.Show("Chưa có quyển sách nào trong danh sách hàng", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    else
                    {
                        BIZ_phieunhap pn = new BIZ_phieunhap();
                        pn.maphieunhap = int.Parse(txtmaphieunhap.Text);
                        pn.ngaynhap = ngaynhap.Value.Date;
                        pn.nhacungcap = txtnhacungcap.Text;
                        pn.nhacungcap = catchuoi(pn.nhacungcap);
                        pn.diachi = txtdiachi.Text;
                        pn.diachi = catchuoi(pn.diachi);
                        pn.sodienthoai = txtsodienthoai.Text;
                        pn.email = txtemail.Text;
                        pn.tongtien = tongtien;
                        foreach (BIZ_chitietphieunhap ctpn in danhsachctpn)
                        {
                            ctpn.phieunhap = new BIZ_phieunhap();
                            ctpn.phieunhap.maphieunhap = pn.maphieunhap;
                        }
                        pn.Them_phieunhap(pn, danhsachctpn);
                        MessageBox.Show("Lưu thành công", "Thông Báo");
                        Frm_xemphieunhap f = new Frm_xemphieunhap();
                        f.Visible = true;
                        this.Visible = false;
                    }
                }
            }
        }

        private void btnxemdanhsach_Click(object sender, EventArgs e)
        {
            this.Visible = false;
            Frm_xemphieunhap f = new Frm_xemphieunhap();
            f.Show();
        }
    }
}
